(function(){
    function fn3<T>(num:T):T {
        return num;
    }
    fn3(12);
    fn3<string>("你好");

    function fn4<T,W>(a:T,b:W):[T,W] {
        return [a,b];
    }
    fn4<string,boolean>("10",false);

    interface happy { 
        jump:string;
    }
   
    function fn5<T extends happy>(a:T):T {
        return a;
    }

    fn5({jump:'0'});

    class Ending<T extends happy> {
        name: T;
        constructor(name:T) {
            this.name = name;
        }
    }
    
    let end = new Ending({jump:'哈哈'})

    console.log(end,'end')

})()